home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / dalla rivista / amiga.free / sorgenti vari / wolfedit2 2.0.4 source.sit / WolfEdit2 2.0.4 Source / UPeekArt.p < prev    next >
Text File  |  1995-10-16  |  3KB  |  140 lines

  1. unit UPeekArt;
  2.  
  3. interface
  4.     uses
  5.         UWolfDoc;
  6.  
  7.     procedure PeekArt;
  8.  
  9. implementation
  10.     uses
  11.         UEditArt;
  12.  
  13.     const
  14.  
  15.         peekArtDlogID = 139;
  16.         brgrIdItem = 2;
  17.         imageItem = 3;
  18.         loadItem = 4;
  19.         wallItem = 5;
  20.         objectItem = 6;
  21.  
  22.         brgrNotFoundAlrtID = 146;
  23.         cantOpenAlrtID = 8194;
  24.  
  25.     type
  26.  
  27.         TPeekArtDialog = object(TArtEditDialog)
  28.                 fResFile: integer;
  29.                 fIsObject: boolean;
  30.                 procedure IPeekArtDialog (itsResFile: integer);
  31.                 procedure UninstallArt;
  32.                 override;
  33.                 procedure InstallArt;
  34.                 override;
  35.                 procedure ItemHit (var e: EventInfo; itemNo: integer);
  36.                 override;
  37.                 function TPeekArtDialog.GetArtResource (id: integer): Handle;
  38.             end;
  39.  
  40.     procedure TPeekArtDialog.IPeekArtDialog (itsResFile: integer);
  41.     begin
  42.         IArtEditDialog(peekArtDlogID, nil, nil, false);
  43.         fResFile := itsResFile;
  44.         fIsObject := true;
  45.         DefineGroup(wallItem, objectItem);
  46.         SetGroupSelection(wallItem + ord(fIsObject));
  47.         SetDefaultItem(loadItem);
  48.         SetDismissItems([ok]);
  49.     end;
  50.  
  51.     procedure TPeekArtDialog.UninstallArt;
  52.     begin
  53.     end;
  54.  
  55.     procedure TPeekArtDialog.InstallArt;
  56.         var
  57.             h: Handle;
  58.     begin
  59.         if fCurrentArt >= 0 then begin
  60.                 h := GetArtResource(fCurrentArt);
  61.                 if h <> nil then
  62.                     if fIsObject then
  63.                         fArtView.InstallObject(ObjectArtHandle(h))
  64.                     else
  65.                         fArtView.InstallWall(WallArtHandle(h));
  66.             end;
  67.     end;
  68.  
  69.     function TPeekArtDialog.GetArtResource (id: integer): Handle;
  70.         var
  71.             h: Handle;
  72.             oldResFile: integer;
  73.     begin
  74.         oldResFile := CurResFile;
  75.         UseResFile(fResFile);
  76.         h := Get1Resource('BRGR', id);
  77.         UseResFile(oldResFile);
  78.         if h = nil then
  79.             DoAlert(brgrNotFoundAlrtID);
  80.         GetArtResource := h;
  81.     end;
  82.  
  83.     procedure TPeekArtDialog.ItemHit (var e: EventInfo; itemNo: integer);
  84.     begin
  85.         inherited ItemHit(e, itemNo);
  86.         case itemNo of
  87.             loadItem: 
  88.                 SelectArt(GetItemNum(brgrIdItem));
  89.             wallItem: 
  90.                 fIsObject := false;
  91.             objectItem: 
  92.                 fIsObject := true;
  93.             otherwise
  94.                 ;
  95.         end;
  96.     end;
  97.  
  98.     function OpenArtFile: integer;
  99.         var
  100.             reply: StandardFileReply;
  101.             types: SFTypeList;
  102.             oldResFile: integer;
  103.  
  104.         procedure Check (result: OSErr);
  105.         begin
  106.             if result <> noErr then begin
  107.                     ErrorAlert(cantOpenAlrtID, reply.sfFile.name, result);
  108.                     OpenArtFile := 0;
  109.                     exit(OpenArtFile);
  110.                 end;
  111.         end;
  112.  
  113.     begin {OpenArtFile}
  114.         StandardGetFile(nil, -1, types, reply);
  115.         if reply.sfGood then begin
  116.                 oldResFile := CurResFile;
  117.                 OpenArtFile := FSpOpenResFile(reply.sfFile, fsRdPerm);
  118.                 Check(ResError);
  119.                 UseResFile(oldResFile);
  120.             end
  121.         else
  122.             OpenArtFile := 0;
  123.     end;
  124.  
  125.     procedure PeekArt;
  126.         var
  127.             dlog: TPeekArtDialog;
  128.             i, resFile: integer;
  129.     begin
  130.         resFile := OpenArtFile;
  131.         if resFile <> 0 then begin
  132.                 new(dlog);
  133.                 dlog.IPeekArtDialog(resFile);
  134.                 i := dlog.DoModalDialog;
  135.                 dlog.Free;
  136.                 CloseResFile(resFile);
  137.             end;
  138.     end;
  139.  
  140. end.